package georeduy.clases;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import com.sun.xml.internal.bind.CycleRecoverable;

@Entity
public class Empresa implements Serializable/*, CycleRecoverable*/
{
	private static final long serialVersionUID = 1L;	
	@Id
	private String nombre;
	@Column(nullable = true)
	private String descripcion;
	@Column(unique=true)
	private String mail;
	@Column(nullable = true)
	private String password;
	@Column(nullable = true)
	private boolean primeraVez;
	
	@OneToOne(cascade = CascadeType.ALL)
	private Imagen logo;
	
	protected Empresa() {
	}
	public Empresa(String nombre, String descripcion, String mail,
			String password, Imagen logo, boolean primeraVez) {
		super();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.mail = mail;
		this.password = password;
		this.logo = logo;
	}
	public String getNombre() {return nombre;}
	public void setNombre(String nombre) {this.nombre = nombre;}
	public String getDescripcion() {return descripcion;}
	public void setDescripcion(String descripcion) {this.descripcion = descripcion;}
	public String getMail() {return mail;}
	public void setMail(String mail) {this.mail = mail;}
	public String getPassword() {return password;}
	public void setPassword(String password) {this.password = password;}
	public Imagen getLogo() {return logo;}
	public void setLogo(Imagen logo) {	this.logo = logo; }
	
	public boolean isPrimeraVez() {
		return primeraVez;
	}
	public void setPrimeraVez(boolean primeraVez) {
		this.primeraVez = primeraVez;
	}	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Empresa other = (Empresa) obj;
		if (nombre == null) {
			if (other.nombre != null)
				return false;
		} else if (!nombre.equals(other.nombre))
			return false;
		return true;
	}
	/*@Override
	public Object onCycleDetected(Context arg0) {
		Empresa e = this;
		e.setLocales(null);
		return e;
	}*/
}
